//
//  KKBLEType.h
//
//  Created by zorro on 2017/11/13.
//  Copyright © 2017年 zorro. All rights reserved.
//

#ifndef KKBLEType_h
#define KKBLEType_h


#endif /* KKBLEType_h */

#import <Foundation/Foundation.h>
#import <CoreBluetooth/CoreBluetooth.h>
#import "KKBLEModel.h"

// 最后链接的设备
#define KK_BLELastDevice @"KKBLELastDevice"
#define KK_BLELastChip @"KK_BLELastChip"
#define KK_BLELastDeviceMac @"KK_BLELastDeviceMac"
#define KK_BLEADV @"KK_BLEADV"
// 最后升级的设备UUID
#define GF_LastUpdateUUID @"AJ_LastUpdateUUID"
// 通知界面更新时 对应相应的状态
typedef enum {
    KKBLEUpdateNormal     = 0,           // 正常状态
    KKBLEUpdateConnecting = 1,           // 链接中
    KKBLEUpdateDidConnect = 2,           // 连接
    KKBLEUpdateDisConnect = 3,           // 断开
    KKBLEUpdateRSSI       = 4,           // 更新RSSI
    KKBLEUpdatePowerOff   = 5,           // 没有开启蓝牙
    KKBLEUpdatePowerOn    = 6            // 开启蓝牙
    
} KKBLEUpdateType;

// 蓝牙协议
typedef enum {
    KKBLEProtocolX9 = 0,
    KKBLEProtocolI6 = 1,
} KKBLEProtocol;

// 蓝牙IC方案
typedef enum {
    KKBLEICNORDIC = 0,
    KKBLEICDIALOG = 1,
    KKBLEITI      = 2,
} KKBLEICProject;

typedef enum {                                   // 详细的看接口参数。
    KKBLEAcceptTypeUnKnown = 0,               // 无状态
    
    // 设置类
    KKBLEAcceptTypeDevideMAC,                 // MAC地址
    KKBLEAcceptTypeDevideInfo,                // 设备信息
    KKBLEAcceptTypeUserInfo,                  // 用户信息
    KKBLEAcceptTypeAlarmClock,                // 闹钟
    KKBLEAcceptTypeCalendar,                  // 日历
    KKBLEAcceptTypeDrink,                     // 喝水
    KKBLEAcceptTypeSedentary,                 // 久坐提醒
    KKBLEAcceptTypeTemperature,               // 天气
    
    KKBLEAcceptTypeTime,                      // 时间信息
    KKBLEAcceptTypeNotify,                    // 通知
    KKBLEAcceptTypeOther,                     // 其他功能
    
    KKBLEAcceptTypeHeartSwitch,               // 心率开关
    KKBLEAcceptTypeCameraSwitch,              // 相机开关
    KKBLEAcceptTypeFindBle,
    
    KKBLEAcceptTypeFindDevice,                // 找设备
    KKBLEAcceptTypeOxygenSwitch,              // 血氧开关
    KKBLEAcceptTypePressureSwitch,            // 血压开关
    
    KKBLEAcceptTypePhoto,                     // 拍照
    KKBLEAcceptTypeFindPhone,                 // 找手机
    
    KKBLEAcceptTypeRealtimeSport,             // 实时运动 20
    KKBLEAcceptTypeRealtimeHeart,             // 实时心率
    KKBLEAcceptTypeRealtimeOX,                // 实时血氧
    KKBLEAcceptTypeRealtimeBP,                // 实时血压
    
    KKBLEAcceptTypeDataSport,                 // 运动数据
    KKBLEAcceptTypeDataSleep,                 // 睡眠数据
    KKBLEAcceptTypeDataHeart,                 // 心率数据
    KKBLEAcceptTypeDataOxygen,                // 血氧
    KKBLEAcceptTypeDataPressure,              // 血压
    
    BLTAcceptTypeDataSportEnd,                // 数据请求结束
    BLTAcceptTypeDataSleepEnd,                // 数据请求结束
    BLTAcceptTypeDataHeartEnd,                // 数据请求结束
    BLTAcceptTypeDataOxygenEnd,               // 数据请求结束
    BLTAcceptTypeDataPressureEnd,             // 数据请求结束
    BLTAcceptTypeDataHightSpeed,              // 进入高速通道
    
    BLTAcceptTypeDataScreenSaverInfo,          // 获取屏保图片信息
    BLTAcceptTypeDataScreenSaverFontType,      // 屏保的时间和步数的字体信息
    BLTAcceptTypeDataScreenImageSwitchState,   // 屏保开关
    BLTAcceptTypeDataScreenStepLocation,       // 屏保计步显示位置
    BLTAcceptTypeDataScreenTimeLocation,        // 屏保时间显示位置
    BLTAcceptTypeDataSportModeData              // 运动模式数据

} KKBLEAcceptType;

typedef enum{
    BLTScreenSendTypeTime,                      // 时间
    BLTScreenSendTypeStep                       // 步数
} BLTScreenSendType;

// 设备状态更新
typedef void (^KKBLEUpdateBlock)(KKBLEModel *model, KKBLEUpdateType type);
// 接受的数据类型，对照协议
typedef void (^KKBLEAcceptBlock)(id object, KKBLEAcceptType type);


